1353F - Decreasing Heights - CodeForces Solution


brute force dp *2200

Please click on ads to support us..

C++ Code:

#include<bits/stdc++.h>
using namespace std;
long long a[110][110] , dp[110][110]; 
signed main()
{
    int n , m , T = 1;
    cin >> T;
    while(T --){
        vector<long long>vec;
        long long ans = 1e18;
        cin >> n >> m;
        for(int i = 0 ; i <= n ; i ++) for(int j = 0 ; j <= m ; j ++) dp[i][j] = 1e18;
        for(int i = 1 ; i <= n ; i ++) for(int j = 1 ; j <= m ; j ++) cin >> a[i][j] , a[i][j] -= i + j - 2 , vec.push_back(a[i][j]);
        dp[0][0] = dp[0][1] = dp[1][0] = 0;
        for(auto k : vec){
            if(a[1][1] < k) continue ;  
            for(int i = 1 ; i <= n ; i ++) for(int j = 1 ; j <= m ; j ++){
                    if(a[i][j] < k) dp[i][j] = 1e18;
                    else dp[i][j] = min(dp[i - 1][j] , dp[i][j - 1]) + a[i][j] - k;
                }
            ans = min(ans , dp[n][m]);
        }
        cout << ans << '\n';
    }
    return 0;
}


Comments

Submit
0 Comments
More Questions

811A - Vladik and Courtesy
1006B - Polycarp's Practice
1422A - Fence
21D - Traveling Graph
1559B - Mocha and Red and Blue
1579C - Ticks
268B - Buttons
898A - Rounding
1372B - Omkar and Last Class of Math
1025D - Recovering BST
439A - Devu the Singer and Churu the Joker
1323A - Even Subset Sum Problem
1095A - Repeating Cipher
630F - Selection of Personnel
630K - Indivisibility
20B - Equation
600B - Queries about less or equal elements
1015A - Points in Segments
1593B - Make it Divisible by 25
680C - Bear and Prime 100
1300A - Non-zero
1475E - Advertising Agency
1345B - Card Constructions
1077B - Disturbed People
653A - Bear and Three Balls
794A - Bank Robbery
157A - Game Outcome
3B - Lorry
1392A - Omkar and Password
489A - SwapSort